package com.cskaoyan.javase.array._3exception._3exercise;

/**
 * 一个长度为0的数组的经典用途：
 *
 * @since 11:28
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo2 {
    public static void main(String[] args) {
        int[] result = getResult(100);
        System.out.println(result[0]);
        System.out.println(result[1]);
    }



    // 需求：一个方法可能给出1个结果，2个结果，也可能没有结果，怎么写这样一个方法？
    // Java方法的返回值只能是一个变量，所以如果有多个结果返回，需要返回"容器"，数组也是可以的
    // 方法的注释怎么写？
    /**
     * 如果输入的参数是大于0的，返回两个结果
     * 如果输入的参数是等于0的，返回一个结果
     * 如果输入的参数是小于0的，没有结果，返回一个长度为0的数字组
     * @since 11:41
     * @param num 被判断的值
     * @return int[] 返回int数组
     * @author wuguidong@cskaoyan.onaliyun.com
     */
    public static int[] getResult(int num) {
        // 声明一个数组引用，具体的初始化在if中进行
        int[] result;
        // 根据num的不同取值，结果不同
        if (num == 0) {
            // 给出1个结果
            result = new int[]{1};
            return result;
        }
        // 写if的时候，大括号过多，else过多，会让逻辑很麻烦，尽量避免使用else
        // 代码能够执行到这里，num一定不是0，所以else是多此一举的，可以不用
        if (num > 0) {
            // 给出2个结果
            result = new int[]{1, 2};
            return result;
        }
        // 能不写if当然最好，因为代码运行到这里，num一定是一个小于0的数，直接写代码就可以了
        // num小于0，没有任何结果
        /*
            数组怎么表示没有结果呢？
            1.null数组
            2.长度为0的数组
            如果有得选，优先选择长度为0的，避免出现空指针异常
         */
        result = new int[0];
        return result;
    }
}
